/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ufpr.ees.suhck.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Length;

@Entity
@NamedQueries({
    @NamedQuery(name = Medico.FIND_POR_EMAIL, query = "SELECT m FROM Medico m "
            + "WHERE m.email = :email"),
    @NamedQuery(name = Medico.FIND_POR_CRM, query = "SELECT m FROM Medico m "
            + "WHERE m.crm like :crm"),
    @NamedQuery(name = Medico.FIND_POR_ESP, query = "SELECT m FROM Medico m "
            + "WHERE m.especialidade like :especialidade")
})
public class Medico extends Usuario implements Serializable {

    //LOGIN - USUÁRIO == EMAIL
    public static final String FIND_POR_EMAIL = "Medico.findPorEmail";
    public static final String FIND_POR_CRM = "Medico.findPorCrm";
    public static final String FIND_POR_ESP = "Medico.findPorEsp";
    
    @NotNull
    @Length(max = 30, message = "CRM deve ter no máximo {max} caracteres.")
    @Column(nullable = false, length = 30, unique = true)
    private String crm;

    @Size(max = 255, message = "Especialidade deve ter no máximo {max} caracteres.")
    private String especialidade;

    @OneToMany(mappedBy = "medico")
    private List<Atendimento> atendimentos = new ArrayList<Atendimento>();

    public String getCrm() {
        return crm;
    }

    public void setCrm(String crm) {
        this.crm = crm;
    }

    public String getEspecialidade() {
        return especialidade;
    }

    public void setEspecialidade(String especialidade) {
        this.especialidade = especialidade;
    }

    public List<Atendimento> getAtendimentos() {
        return atendimentos;
    }

    public void setAtendimentos(List<Atendimento> atendimentos) {
        this.atendimentos = atendimentos;
    }

}
